﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AdmLaboratorios.DTO;
using System.Data.SqlClient;
using System.Data;

namespace AdmLaboratorios.DAO
{
    public class StockDAO : DAOBase<StockDTO>
    {
        public DataTable Consulta(string filtro)
        {
            string qry = @"SELECT * 
                            FROM [Stock] A
                            LEFT JOIN [Partner] B ON A.IdPartner=B.Id
                            LEFT JOIN [Producto] C ON A.IdProducto=C.Id";

            if (filtro.Trim() != string.Empty)
                qry = qry + " WHERE " + filtro;

            return GetTable(qry);
        }

        public DataTable ValeConsumoItems(OrdenProduccionDTO op)
        {
//            string qry = @"SELECT S.*, Prod.* 
//                            FROM [Stock] S
//                            JOIN [Producto] Prod ON S.IdProducto = Prod.Id
//                            
//                            JOIN [InformeRecepcionItem] IRItem ON S.Id = IRItem.IdStock
//                            JOIN [InformeRecepcion] IR ON IRItem.IdInformeRecepcion = IR.Id 
//                            JOIN [OrdenProduccion] OP ON IR.IdOrdenProduccion = OP.Id";

            string qry = @"SELECT 
                            S.Id,
                            S.NroAnalisis AS NroAnalisis,
                            S.Cantidad AS STCantidad,
                            S.FactorCorreccion AS STFactorCorreccion,
                            S.IdProducto,
                            Prod.UnidadMedida,
                            Prod.Nombre,
                            Prod.NombreComercial,
                            Prod.Tipo,
                            OPItem.Cantidad AS OPCantidad 

                            FROM [Stock] S
                            JOIN [Producto] Prod ON S.IdProducto = Prod.Id

                            JOIN [InformeRecepcionItem] IRItem ON S.Id = IRItem.IdStock
                            JOIN [InformeRecepcion] IR ON IRItem.IdInformeRecepcion = IR.Id 
                            JOIN [OrdenProduccion] OP ON IR.IdOrdenProduccion = OP.Id 
                            JOIN [OrdenProduccionItem] OPItem ON OP.Id = OPItem.IdOrdenProduccion AND OPItem.IdProducto = IRItem.IdProducto";

            if (op != null)
                qry = qry + " WHERE S.Estado = 'APROBADO' AND OP.Id = " + op.Id;

            return GetTable(qry);
        }

        //public DataTable ValeDevolucionItems(OrdenProduccionDTO op)
        //{
        //    string qry = @"SELECT * FROM Stock";
        //    return GetTable(qry);
        //}

        public DataTable GetVencimientos()
        {
            string qry = @"SELECT ST.*, IL.FechaReAnalisis 
                        FROM InformeLaboratorio IL
                        JOIN Stock ST ON IL.IdStock = ST.Id
                        WHERE 
                        ST.Activo = 1 AND
                        ST.Estado = 'APROBADO' AND 
                        IL.FechaReAnalisis <= CONVERT(date, getdate())";
            return GetTable(qry);
        }
    }
}
